JasmineJS এ Test Initialization এবং Cleanup Techniques টেস্টের আগে এবং পরে কিছু নির্দিষ্ট কোড এক্সিকিউট করতে সহায়তা করে। এটি আপনার টেস্ট কেসগুলোকে সঠিকভাবে সেটআপ এবং পরিস্কার করতে সাহায্য করে, যাতে টেস্টগুলো নির্ভুল এবং কার্যকর হয়। এই টেকনিকগুলো beforeEach(), afterEach(), beforeAll(), এবং afterAll() এর মাধ্যমে পরিচালিত হয়।
Test Initialization
Test Initialization এর মাধ্যমে আপনি টেস্টের জন্য পূর্বপ্রস্তুতি নিতে পারেন, যেমন ডেটা ইনিশিয়ালাইজেশন বা ফাংশন/অবজেক্ট তৈরি করা। JasmineJS এ beforeEach() এবং beforeAll() ফাংশন এই কাজের জন্য ব্যবহৃত হয়।
beforeEach()
beforeEach() ফাংশনটি প্রতিটি টেস্ট কেসের আগে এক্সিকিউট হয়। এটি সাধারণত টেস্টের জন্য প্রয়োজনীয় পরিবেশ সেটআপ বা ইনিশিয়াল ডেটা তৈরি করতে ব্যবহৃত হয়।
উদাহরণ:
describe("Calculator", function() {
let calc;
beforeEach(function() {
calc = new Calculator(); // প্রতিটি টেস্ট কেসের আগে একটি নতুন Calculator তৈরি করা হচ্ছে
});
it("should add two numbers correctly", function() {
expect(calc.add(2, 3)).toBe(5);
});
it("should subtract two numbers correctly", function() {
expect(calc.subtract(5, 3)).toBe(2);
});
});
এখানে:
beforeEach()ফাংশনটি নিশ্চিত করে যে প্রতিটি টেস্ট কেসের আগে নতুনCalculatorইনস্ট্যান্স তৈরি হবে, যাতে আগের টেস্টের কোনো প্রভাব না পড়ে।
beforeAll()
beforeAll() ফাংশনটি একবার শুধুমাত্র টেস্টের প্রথমে এক্সিকিউট হয়। এটি সাধারণত একাধিক টেস্ট কেসের জন্য একবার ইনিশিয়ালাইজেশন করতে ব্যবহৃত হয়, যেমন ডাটাবেস কানেকশন বা ফাইল সিস্টেমের সাথে কাজ করা।
উদাহরণ:
describe("Database Tests", function() {
let db;
beforeAll(function() {
db = new Database(); // এই ফাংশনটি একবারই চলবে, টেস্টের শুরুতে
db.connect(); // ডাটাবেস কানেকশন স্থাপন
});
it("should retrieve data correctly", function() {
const data = db.getData();
expect(data).toBeDefined();
});
it("should save data correctly", function() {
const result = db.saveData("test");
expect(result).toBe(true);
});
});
এখানে:
beforeAll()একবার টেস্ট শুরুর আগে ডাটাবেসের সাথে কানেকশন স্থাপন করেছে, যা সমস্ত টেস্টের জন্য প্রয়োজনীয়।
Test Cleanup
Test Cleanup এর মাধ্যমে আপনি টেস্ট কেস শেষ হওয়ার পর প্রয়োজনীয় পরিষ্কার বা টিয়ারডাউন কার্যক্রম করতে পারেন, যেমন ডাটাবেস সংযোগ বন্ধ করা বা অবজেক্ট মুছে ফেলা। JasmineJS এ afterEach() এবং afterAll() এই কাজের জন্য ব্যবহৃত হয়।
afterEach()
afterEach() ফাংশনটি প্রতিটি টেস্ট কেসের পর এক্সিকিউট হয়। এটি সাধারণত টেস্টের পর অবজেক্ট পরিস্কার বা অন্য যেকোনো কার্যক্রম করার জন্য ব্যবহৃত হয়।
উদাহরণ:
describe("File Handler", function() {
let fileHandler;
beforeEach(function() {
fileHandler = new FileHandler(); // প্রতিটি টেস্ট কেসের আগে নতুন ফাইল হ্যান্ডলার তৈরি
});
afterEach(function() {
fileHandler.cleanup(); // টেস্টের পর ফাইল হ্যান্ডলার ক্লিনআপ
});
it("should read file correctly", function() {
const content = fileHandler.read("file.txt");
expect(content).toBe("File Content");
});
it("should write file correctly", function() {
fileHandler.write("file.txt", "New Content");
const content = fileHandler.read("file.txt");
expect(content).toBe("New Content");
});
});
এখানে:
afterEach()ফাংশনটি প্রতিটি টেস্ট কেসের পরfileHandler.cleanup()কল করে, যা ফাইল সিস্টেমের ক্লিনআপ করবে।
afterAll()
afterAll() ফাংশনটি একবার শুধুমাত্র টেস্টের শেষে এক্সিকিউট হয়। এটি সাধারণত একাধিক টেস্টের পর একবার টিয়ারডাউন করতে ব্যবহৃত হয়, যেমন ডাটাবেস কানেকশন বন্ধ করা বা লগ ফাইল পরিষ্কার করা।
উদাহরণ:
describe("Database Cleanup", function() {
let db;
beforeAll(function() {
db = new Database();
db.connect(); // একবার ডাটাবেস কানেকশন স্থাপন
});
afterAll(function() {
db.disconnect(); // একবার ডাটাবেস কানেকশন বন্ধ
});
it("should retrieve data correctly", function() {
const data = db.getData();
expect(data).toBeDefined();
});
it("should save data correctly", function() {
const result = db.saveData("test");
expect(result).toBe(true);
});
});
এখানে:
afterAll()একবার টেস্টের শেষে ডাটাবেস কানেকশন বন্ধ করছে।
সংক্ষিপ্ত সারাংশ
JasmineJS এ Test Initialization এবং Cleanup Techniques ব্যবহৃত হয় টেস্টের আগে এবং পরে কিছু কার্যক্রম সম্পাদন করতে, যাতে টেস্টগুলো নির্ভুল এবং কার্যকরী হয়।
beforeEach(): প্রতিটি টেস্ট কেসের আগে চলবে, টেস্টের জন্য ইনিশিয়াল সেটআপ।beforeAll(): একবার টেস্টের শুরুতে চলবে, একাধিক টেস্টের জন্য সাধারণ ইনিশিয়াল সেটআপ।afterEach(): প্রতিটি টেস্ট কেসের পরে চলবে, টেস্টের পরের ক্লিনআপ বা পরিস্কার।afterAll(): একবার টেস্টের শেষে চলবে, একাধিক টেস্টের পর সাধারণ টিয়ারডাউন বা পরিস্কার।
Read more